
# 根据规则进行提问
from prompts.prompts import LLM_MATERIAL_TO_CATEGORY_PROMPT, IPO_SYS_PROMPT, LLM_INQUIRY_BY_RULES_PROMPT
from service.rules_service import llm_service
from utils.utils import read_json_file, remove_json_prefix_suffix
from service.llm_service import LLM_Service
import json

llm_service = LLM_Service()

class Inquiry_Service:

    def inquiry(self, rule_path, category_path, material_text):
        """
        根据规则，对申报材料进行发问
        1.读取申报文件，对申报文件进行分类
        2.找到类型下的所有问询规则，对问询规则进行打分
        3.找到得分的问询规则，根据问询规则进行提问
        """
        rules = read_json_file(rule_path)
        category_json = read_json_file(category_path)
        question_content = LLM_MATERIAL_TO_CATEGORY_PROMPT.format(material = material_text, rules=category_json)
        print(question_content)
        response = llm_service.call_with_messages(IPO_SYS_PROMPT, question_content)
        category_list = response.strip().split(",")
        print(category_list)
        inquiry_result = {}
        for category in category_list:
            rule_list = rules.get(category)
            inquiry_content = LLM_INQUIRY_BY_RULES_PROMPT.format(material=material_text, category_ref=category, rules='\n'.join(rule_list))
            inquiry_response = llm_service.call_with_messages(IPO_SYS_PROMPT, inquiry_content)
            inquiry_response = remove_json_prefix_suffix(inquiry_response)
            inquiry_result['rule_type'] = category
            inquiry_result['inquiry_content'] = inquiry_response
        # inquiry_result = json.dumps(inquiry_result, ensure_ascii=False)
        print(inquiry_result)
        return inquiry_result


if __name__ == '__main__':

    inquiry_service = Inquiry_Service()
    rule_path = r"D:\workspace\ipo2\app\test\rules_query_merged.json"
    category_path = r"D:\workspace\ipo2\app\test\rules_sample.json"
    material_text = """
        （1）报告期内，公司原材料成本占相应期间主营业务成本
    的比例分别为 88.75%、88.84%及 87.64%，原材料价格波动对公司生产成本构
    成重大影响。公司生产所需的主要原材料包括元器件、铜排、板材等。（2）发
    行人生产过程中的核心元器件主要为外采，报告期内，公司通过直采及通过经
    销商、代理商采购等途径采购的施耐德、ABB、西门子、ASCO、GE 等国际品
    牌电气元器件金额占各年元器件采购总金额的比例约为 50%左右。（3）公司生
    产过程需要采购施耐德和常熟开关制造有限公司生产的部分元器件。施耐德是
    全球知名的电气和能源管理供应商，主要产品包括开关柜、变压器及断路器等
    元器件；常熟开关制造有限公司是国内知名的电气生产商，主要产品包括中低
    压配电电器、工业控制电器、中低压成套装置及其元器件等。公司若想直接向
    施耐德和常熟开关制造有限公司等厂商采购，需获得上述供应商授予的特定产
    品的直采权限，2020 年 4 月前，公司尚未获得直采权限，而是通过关联方艾捷
    能采购。
    """
    inquiry_service.inquiry(rule_path, category_path, material_text)






